package com.stone.boot.pipeline.app.service;

import com.stone.boot.pipeline.domain.entity.Pipeline;
import com.stone.boot.pipeline.domain.vo.PipelineVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 流程器service
 *
 * @author Mr_wenpan@163.com 2021/8/5 10:01 下午
 */
public interface PipelineService {

    /**
     * 批量更新
     *
     * @param pipelines 已修改流水线头
     * @return 更新的条数
     */
    int batchMerge(List<Pipeline> pipelines);

    /**
     * 通过code获取yaml
     *
     * @param id 流程器主键
     * @return 通过id获取Pipeline
     */
    PipelineVO getPipelineDTO(Long id);

    /**
     * 批量更新流程器
     *
     * @param pipelines 流程器数据集合
     * @author Mr_wenpan@163.com 2021/8/6 1:35 下午
     */
    void batchUpdate(List<Pipeline> pipelines);

    /**
     * 批量新增流程器
     *
     * @param pipelines 流程器集合
     * @author Mr_wenpan@163.com 2021/8/6 2:08 下午
     */
    void batchInsert(List<Pipeline> pipelines);

    /**
     * 批量新增和修改流程器综合方法（重写）
     *
     * @param pipelines 流程器数据集合
     * @author Mr_wenpan@163.com 2021/8/6 3:46 下午
     */
    void batchCreateAndUpdate(List<Pipeline> pipelines);

    /**
     * 批量解析并保存yaml流程器
     *
     * @param multipartFiles 上传的yml文件
     * @author Mr_wenpan@163.com 2021/8/6 9:07 下午
     */
    void savePipelineDTOS(List<MultipartFile> multipartFiles);

    /**
     * 批量删除流程器（重写）
     *
     * @param pipelines 待删除的流程器
     * @author Mr_wenpan@163.com 2021/8/6 9:47 下午
     */
    void batchRemove(List<Pipeline> pipelines);
}